Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
18-06-2026

Inwerkingtreding:
18-06-2026

19.2 Liquiditeit - wat is het werkkapitaal op korte termijn?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 19.2.0
2# Parameters: ?peildatum
3# Ontologie: versie 3.0.0 of nieuwer
4
5PREFIX onz-fin: <http://purl.org/ozo/onz-fin#>
6prefix onz-zorg:  <http://purl.org/ozo/onz-zorg#>
7PREFIX onz-g: <http://purl.org/ozo/onz-g#>
8PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
9
10SELECT ?Kental ?Waarde
11WHERE {
12    {
13        SELECT (SUM(IF(?jaarrekeningpost = "B Vlottende activa", ?bedrag, 0)) - 
14                SUM(IF(?jaarrekeningpost = "G Kortlopende schulden", ?bedrag, 0)) AS ?werkkapitaal)
15        WHERE {
16            {
17                SELECT ?jaarrekeningpost (SUM(?bedrag_rubriek) AS ?bedrag)
18                WHERE {
19                    {	# Middle select: Bereken het totaal per rubriek (saldo + latere mutaties)
20                        SELECT  
21                            ?rubriek ?jaarrekeningpost
22                            (SUM(?geld_bedrag_post) + SUM(?saldo_waarde)/COUNT(?saldo_waarde) AS ?bedrag_rubriek)
23                        WHERE {
24                            {	# Innermost select: 
25                                #  - Haal het meest recente saldo per rubriek op als beginsaldo, 0 indien geen saldo in data
26                                #  - Haal de bijbehorende datum op om alle posten na beginsaldo bij toe te voegen
27                                SELECT  
28                                    ?rubriek ?jaarrekeningpost
29                                    (IF(BOUND(?saldo_bedrag), ?saldo_bedrag, 0) AS ?saldo_waarde)
30                                    ?peildatum_argument
31                                    (IF(BOUND(?saldo_datum), ?saldo_datum, ?unbound) AS ?begin_datum)
32                                    ?saldo_datum ?saldo
33                                WHERE { 
34
35                                    # BIND("2024-12-31"^^xsd:date AS ?peildatum)
36                                    BIND(?peildatum as ?peildatum_argument)
37                                
38                                    # Bind jaarrekeningpost op basis van rubriekCode
39                                    {
40                                        # Prismant: prefix-mapping, want Prismant consolideert niet dus we willen onderliggende rubrieken
41                                        {
42                                        ?rubriek a onz-fin:Grootboekrubriek .
43                                        }
44                                        UNION
45                                        {
46                                        ?rubriek a onz-fin:Grootboekrekening .
47                                        }
48                                        BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
49
50                                        VALUES (?prismantPrefix ?jaarrekeningpost) {
51                                        ("3"     "B Vlottende activa")
52                                        ("12"    "B Vlottende activa")
53                                        ("131"   "B Vlottende activa")
54                                        ("132"   "B Vlottende activa")
55                                        ("14"    "G Kortlopende schulden")
56                                        ("15"    "G Kortlopende schulden")
57                                        }
58                                        FILTER(STRSTARTS(?rubriekCode, ?prismantPrefix))
59                                    }
60                                    UNION
61                                    {
62                                    # RGS: exacte mapping, want RGS consolideert zelf onderliggende rubrieken
63                                    # Dit houdt in dat rubrieken naast de directe boekingen ook de totaaltelling
64                                    # van alle boekingen op alle onderliggende rubrieken bevatten (algemene uitgangspunten)
65                                    # We willen dus niet dubbel tellen en vandaar exacte match
66                                        VALUES (?rubriekCode ?jaarrekeningpost) {
67                                        ("BVrd"    "B Vlottende activa")
68                                        ("BPro"    "B Vlottende activa")
69                                        ("BObd"    "B Vlottende activa")
70                                        ("BVor"    "B Vlottende activa")
71                                        ("BVfi"    "B Vlottende activa")
72                                        ("BEff"    "B Vlottende activa")
73                                        ("BLim"    "B Vlottende activa")
74                                        ("BSch"    "G Kortlopende schulden")
75                                        }
76                                    
77                                        BIND(IRI(CONCAT(STR(onz-fin:), ?rubriekCode)) AS ?rubriek)
78                                            {
79                                            ?rubriek a onz-fin:Grootboekrubriek .
80                                            }
81                                            UNION
82                                            {
83                                            ?rubriek a onz-fin:Grootboekrekening .
84                                            }
85                                        }
86
87                                
88                                    OPTIONAL {
89                                        ?rubriek onz-g:isAbout ?saldo .
90                                        ?saldo
91                                            a onz-fin:EindSaldo ;
92                                        onz-fin:heeftGeldBedrag ?saldo_bedrag ;
93                                        onz-g:hasDate ?saldo_datum .
94
95                                        FILTER (?saldo_datum <= ?peildatum_argument)
96
97                                        FILTER NOT EXISTS {  
98                                            ?rubriek onz-g:isAbout ?saldo2 .
99                                            ?saldo2
100                                                a onz-fin:EindSaldo ;
101                                            onz-g:hasDate ?saldo_datum2 .
102
103                                            FILTER(?saldo2 != ?saldo)
104                                            FILTER (?saldo_datum2 <= ?peildatum_argument)
105                                            FILTER (
106                                                ?saldo_datum2 > ?saldo_datum 
107                                                || (
108                                                    ?saldo_datum2 = ?saldo_datum 
109                                                    && STR(?saldo2) > STR(?saldo)
110                                                )
111                                            )
112                                        }
113                                    }
114
115                                }
116                            } # End of innermost query: Alle aanwezige beginsaldos zijn gevonden
117                        
118                            # Selecteer de bijbehorende grootboekpost bij de rubriek 
119                            OPTIONAL {  
120                                ?grootboek_post
121                                    a onz-fin:Grootboekpost ;
122                                    onz-g:partOf ?rubriek ;
123                                    onz-g:hasDate ?datum ;
124                                    onz-fin:heeftGeldBedrag ?geld_bedrag_temp .
125                                # Behoud de grootboek post alleen voor de meest specifieke rubriek, 
126                                # om dubbeltelling bij meerdere rubrieken te voorkomen
127                                FILTER NOT EXISTS {
128                                  ?grootboek_post onz-g:partOf ?specifiekereRubriek .
129                                  ?specifiekereRubriek onz-g:partOf+ ?rubriek .
130                                }
131                                FILTER (?datum <= ?peildatum_argument && (?datum > ?begin_datum || !BOUND(?begin_datum)))
132                            }
133                            BIND(IF(BOUND(?geld_bedrag_temp), ?geld_bedrag_temp, 0) AS ?geld_bedrag_post)
134
135                        } GROUP BY ?rubriek ?jaarrekeningpost
136                    } # End of middle query: Alle beginsaldos + transacties daarna zijn gevonden (eindtotaal bekend)
137
138                } GROUP BY ?jaarrekeningpost
139            }
140        }
141    }
142    
143    BIND("Werkkapitaal op korte termijn" AS ?Kental)
144    # Eindantwoord afronden op twee decimalen 
145    BIND(ROUND(?werkkapitaal * 100) / 100 AS ?Waarde)
146}
147ORDER BY ?Kental